﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Wimm.Common.Interfaces.Utils;
using Wimm.Common.Entities;

namespace Wimm.Common.Interfaces.Services
{
    public interface IExpenseService
    {
        Task<IPagedResult<Expense>> LoadExpenses(IPagedRequest<Expense> request);
        Task<IEnumerable<ExpenseCategory>> LoadCategories(int? parentId);
        Task<IReadOnlyDictionary<int,Icon>> LoadCategoryIcons();
        Task<Expense> InsertExpense(Expense newExpence);
        Task<Expense> EditExpense(Expense newExpence);
        Task<IEnumerable<KeyValuePair<ExpenseCategory, decimal>>> LoadExpenseGroups(DateTime? from, DateTime? to, int userId, bool detailed);
        Task<IEnumerable<Tuple<int, int, int, string>>> LoadCategories();
        Task<DateTime> GetLimitDate(bool isMaxDate);
    }
}
